package initialize

import (
	"encoding/json"
	"fmt"
	"github.com/nacos-group/nacos-sdk-go/clients"
	"github.com/nacos-group/nacos-sdk-go/common/constant"
	"github.com/nacos-group/nacos-sdk-go/vo"
	"onerk4/zg5yk/ordering/common/global"
)

func InitNaCos() {
	nacos := global.AppConfig.NacosConfig
	// 配置与 NaCos 服务的连接
	clientConfig := constant.ClientConfig{
		NamespaceId:         nacos.Name,           // 命名空间 ID，用于区分不同的配置空间
		TimeoutMs:           5000,                 // 配置请求超时时间，单位毫秒
		NotLoadCacheAtStart: true,                 // 启动时不加载缓存，避免读取过时数据
		LogDir:              "../log/nacos/log",   // 日志文件夹路径
		CacheDir:            "../log/nacos/cache", // 缓存文件夹路径
		LogLevel:            "debug",              // 日志等级，调试级别
	}

	// 配置 NaCos 服务的连接信息
	serverConfigs := []constant.ServerConfig{
		{
			IpAddr:      nacos.Host, // NaCos 服务器 IP 地址
			ContextPath: "/nacos",   // NaCos 服务的上下文路径
			Port:        8848,       // NaCos 服务器的端口
			Scheme:      "http",     // 使用的协议
		},
	}

	// 创建配置客户端
	configClient, err := clients.CreateConfigClient(map[string]interface{}{
		"serverConfigs": serverConfigs, // NaCos 服务器配置
		"clientConfig":  clientConfig,  // 客户端配置
	})
	if err != nil {
		return
	}

	// 从 NaCos 获取配置内容
	content, err := configClient.GetConfig(vo.ConfigParam{
		DataId: nacos.DataId, // 配置的 DataId
		Group:  nacos.Group,  // 配置的 Group
	})

	err = json.Unmarshal([]byte(content), &global.AppConfig.Nacos)
	if err != nil {
		return
	}
	fmt.Println("nacos init success!")
}
